﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SIPDTO;

namespace SIPDAL
{
    public class mgDiocesis
    {
        /// <summary>
        /// Declaracion de Variables
        /// </summary>
        SIPDataContext dc = new SIPDataContext();

        public mgDiocesis()
        {
        }
        tblDiocesi _tbdiocesis = new tblDiocesi();
        List<dtoDiocesis> _diocesis = new List<dtoDiocesis>();
        dtoError _resp = new dtoError();

        public List<dtoDiocesis> ObtenerTodasDiocesis() // lista de Diocesis a mostrar para el grid
        {
            int i = 0;
            try
            {
                var condicion = (from p in dc.tblDiocesis 
                                 select p).ToList();

                //Esto aplica cuando no existan clientes activos
                if (condicion.Count.Equals(0))
                {
                    _diocesis.Add(new dtoDiocesis());
                    _diocesis[i].Identificacion = 0;
                    _diocesis[i].Descripcion = "No hay parroquias registradas";
                }
                else
                {
                    foreach (tblDiocesi reg in condicion)
                    {
                        _diocesis.Add(new dtoDiocesis());
                        _diocesis[i].Identificacion = reg.id_diocesis;
                        _diocesis[i].Descripcion = reg.descripcion;
                        _diocesis[i].Estado = Convert.ToBoolean(reg.activo);
                        i++;
                    }
                }

            }
            catch (Exception ex)
            {
                throw new Exception("No se pudo recuperar la informacion. " + ex.Message);
            }

            return _diocesis;

        }

        public dtoError InactivarDiocesis(dtoDiocesis diocesis)
        {
            try
            {
                var condicion = (from p in dc.tblDiocesis
                                 where p.id_diocesis == diocesis.Identificacion
                                 select p).ToList();
                foreach (tblDiocesi _diocesis in condicion)
                {
                    // _canton.descripcion = canton.Descripcion;
                    _diocesis.activo = diocesis.Estado;
                    dc.SubmitChanges();
                    _resp.Mensaje = "Diócesis inactivada correctamente.";
                    _resp.IdError = 100;
                }

            }
            catch (Exception ex)
            {
                _resp.IdError = -100;
                _resp.Mensaje = ex.Message.ToString();
                return _resp;
                throw;
            }

            return _resp;
        }

        public List<dtoDiocesis> ObtenerDiocesis(dtoDiocesis diocesis)// Obtiene las diocesis a mostrar en el combo
        {
            int i = 0;

            try
            {

                var condicion = (from p in dc.tblDiocesis
                                 where p.id_diocesis == diocesis.Identificacion 
                                 select p);

                foreach (tblDiocesi reg in condicion)
                {
                    _diocesis.Add(new dtoDiocesis());
                    _diocesis[i].Identificacion = reg.id_diocesis;
                    _diocesis[i].Descripcion = reg.descripcion;
                    _diocesis[i].Estado = Convert.ToBoolean(reg.activo);

                    i++;
                }

            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrió un error al obtener los datos " + ex.Message);
            }

            return _diocesis;

        }
        public List<dtoDiocesis> ObtenerDiocesis()// Obtiene las diocesis a mostrar en el combo
        {
            int i = 0;

            try
            {

                var condicion = (from p in dc.tblDiocesis
                                 where p.activo == true
                                 select p);

                foreach (tblDiocesi reg in condicion)
                {
                    _diocesis.Add(new dtoDiocesis());
                    _diocesis[i].Identificacion = reg.id_diocesis;
                    _diocesis[i].Descripcion = reg.descripcion;
                    i++;
                }

            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrió un error al obtener los datos " + ex.Message);
            }

            return _diocesis;

        }

         public dtoError AceptarDiocesis(dtoDiocesis diocesis,int evento)
         {
             _tbdiocesis.id_diocesis = diocesis.Identificacion;
             _tbdiocesis.descripcion = diocesis.Descripcion;
             _tbdiocesis.activo  = diocesis.Estado ;

             try
             {
                 _resp = ExisteDiocesis(diocesis);
                 if ((_resp.IdError == -101) && (evento == 1)) //No existe el registro y se procede a ingresarlo
                 {
                     dc.tblDiocesis.InsertOnSubmit(_tbdiocesis);
                     dc.SubmitChanges();
                     _resp.Mensaje = "Información guardada correctamente.";
                     _resp.IdError = 100;

                 }
                 if ((_resp.IdError == 101) && (evento == 1))
                 {
                     _resp.Mensaje = "La información de la diócesis ya se encuentra registrada.";
                     _resp.IdError = -100;
                 }
                 else if ((_resp.IdError == 101) && (evento == 2))// Se modifica los registros de la diocesis
                 {
                    tblDiocesi param = dc.tblDiocesis.Single(p => p.id_diocesis  == diocesis.Identificacion);
                     param.descripcion = diocesis.Descripcion;
                     param.activo = diocesis.Estado;
                     dc.SubmitChanges();
                     _resp.Mensaje = "Información modificada correctamente.";
                     _resp.IdError = 100;

                 }
                 return _resp;
             }

             catch (Exception ex)
             {
                 _resp.IdError = -100;
                 _resp.Mensaje = ex.Message.ToString();
                 return _resp;
                 throw;
             }

         }

         public dtoError ExisteDiocesis(dtoDiocesis diocesis)
         {

             var condicion = (from p in dc.tblDiocesis
                              where p.id_diocesis == diocesis.Identificacion
                              select p).Count();
             if (Convert.ToInt32(condicion.ToString()) > 0)
             {
                 _resp.Mensaje = "La diócesis ya existe en la tabla de Diócesis";
                 _resp.IdError = 101;

             }
             else
             {
                 _resp.IdError = -101;
                 _resp.Mensaje = "La diócesis no existe en la tabla de Diócesis";
             }
             return _resp;
         }


    }

    }

